--[[
    @Author       : GGELUA
    @Date         : 2022-02-13 21:48:48
Last Modified by: GGELUA
Last Modified time: 2023-10-25 17:15:19
--]]
local 动作 = require('对象/基类/动作')
local 控制 = require('对象/基类/控制')
local 状态 = require('对象/基类/状态')
local 主角 = class('主角', 动作, 控制, 状态)

function 主角:初始化(t,当前)
    self.最后坐标时间 = os.time()
    self.最后坐标 = require('GGE.坐标')(t.地图数据.x,t.地图数据.y)
    self.pid = 0
    self.当前=当前
    self[动作]:Set当前(当前)
    self[控制]:Set当前(当前)
end

function 主角:更新(dt)
    self[动作]:更新(dt)
    self[控制]:更新(dt)
    self[状态]:更新(dt)
    if not 多开数据[self.当前].__主控.战斗中 and not 多开数据[self.当前].__UI界面.界面层.返回.是否可见 and 多开数据[self.当前].__全局自动走路开关 and 多开数据[self.当前].__全局自动走路秒 > 10 and not self.是否移动 and not self.是否摆摊 and not self.是否收购 then
        多开数据[self.当前].__全局自动走路秒 = 0
        local xxQ,yyQ,mmxQ,mmyQ
        mmxQ,mmyQ = math.floor(多开数据[self.当前].__主显.地图.宽度),math.floor(多开数据[self.当前].__主显.地图.高度)
        xxQ = math.random(3,mmxQ)
        yyQ = math.random(3,mmyQ)
        local xy = require('GGE.坐标')(xxQ,yyQ)
        local route = 多开数据[self.当前].__主显.地图:寻路(self.xy, xy)
        if #route > 0 then
            发送数据(当前 or self and self.当前,1001,{x=math.floor(xy.x/20),y=math.floor(xy.y/20),距离=0})
            self.移动目标 = xy
            self:路径移动(route)
        end
    end
end

function 主角:显示(pys)
    local p = self.xy+pys
    self[状态]:显示底层(p)
    self[动作]:显示(p)
    self[状态]:显示(p)
    self[状态]:显示顶层(p)
    if (os.time() - self.最后坐标时间 > 0) and 多开数据[self.当前] and not 多开数据[self.当前].__主控.战斗中 and (not self.是否组队 or self.是否队长) and self.xy:取距离(self.最后坐标) > 1 then
        self.最后坐标时间 = os.time()
        self.最后坐标 = require('GGE.坐标')(self.xy.x,self.xy.y)
        发送数据(当前 or self and self.当前,1002,{x=math.floor(self.xy.x/20),y=math.floor(self.xy.y/20),方向=self.方向-1,类型="行走"})
    end
end

function 主角:设置路径(xy)
    if not 多开数据[self.当前].__主控.战斗中 and not  self.是否摆摊 then
        if 多开数据[当前 or self and self.当前].__全局自动走路开关 then
            多开数据[当前 or self and self.当前].__全局自动走路开关 = false
            多开数据[self.当前].__全局自动走路秒 = 0
           多开数据[当前 or self and self.当前].__UI弹出.提示框:打开('#Y自动挂机已关闭！')
        end
        local route = 多开数据[self.当前].__主显.地图:寻路(self.xy, xy,self.飞行)
        if #route > 0 then
            self.最后坐标时间 = os.time()
            self.最后坐标 = require('GGE.坐标')(self.xy.x,self.xy.y)
            发送数据(当前 or self and self.当前,1001,{x=math.floor(xy.x/20),y=math.floor(xy.y/20),距离=0})
            self.移动目标 = xy
            self:路径移动(route)
        end
    end
end

function 主角:开始移动(xy)
    self.最后坐标时间 = os.time()
    self.最后坐标 = require('GGE.坐标')(self.xy.x,self.xy.y)
    self[控制]:开始移动(xy)
end

return 主角